package jp.seraph.jsade.model;

import java.util.HashMap;
import java.util.Map;

/**
 * PolynomialAngleVelocityCalculatorにて使用される、多項式の引数の種類を表す列挙
 * 
 * 
 */
public enum ArgumentKind {
    /**
     * 引数として現在角度を使用する
     */
    CURRENT_ANGLE(1),

    /**
     * 引数として目標角度を使用する
     */
    TARGET_ANGLE(2),

    /**
     * 引数として(目標角度-現在角度)を使用する
     */
    ANGLE_DIFF(3);

    private ArgumentKind(int aValue) {
        mValue = aValue;
        this.init(aValue);
    }

    private void init(int aValue) {
        if (VALUE_MAP == null)
            VALUE_MAP = new HashMap<Integer, ArgumentKind>();

        VALUE_MAP.put(new Integer(aValue), this);
    }

    private static Map<Integer, ArgumentKind> VALUE_MAP;
    private int mValue;

    public static ArgumentKind fromInt(Integer aKey) {
        return VALUE_MAP.get(aKey);
    }

    public int toInt() {
        return mValue;
    }
}
